package main

import (
	"fmt"
	"sync"
)

//引入WaitGroup，类似于java中的线程工具类
var wg sync.WaitGroup

func hello(i int) {
	//defer  可以向函数注册、退出调用，即当主调函数退出时，defer后的函数才被调用，
	defer wg.Done() // goroutine结束就登记-1
	fmt.Println("Hello Goroutine!", i)
}
func main() {

	for i := 0; i < 10; i++ {
		wg.Add(1) // 启动一个goroutine就登记+1
		go hello(i)
	}
	wg.Wait() // 等待所有登记的goroutine都结束
}
